From a38e79794133e66c134c8fcd011bf9c1f1a4a7f0 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 17 Dec 2008 19:45:56 +0100 Subject: [PATCH] Don't remove composited childrens area when processing updates Handle shape when processing updates Make sure we reset the old clips before setting new cairo clips --- gdk/gdkwindow.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 01e4ef71bd..392a515162 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -3986,6 +3986,8 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable, { cairo_save (cr); cairo_identity_matrix (cr); + + cairo_reset_clip (cr); cairo_new_path (cr); gdk_cairo_region (cr, private->clip_region); @@ -4004,6 +4006,8 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable, cairo_save (cr); cairo_identity_matrix (cr); + cairo_reset_clip (cr); + cairo_new_path (cr); gdk_cairo_region (cr, paint->region); cairo_restore (cr); @@ -4166,7 +4170,7 @@ gdk_window_process_updates_recurse (GdkWindow *window, { child = l->data; - if (!GDK_WINDOW_IS_MAPPED (child) || child->input_only) + if (!GDK_WINDOW_IS_MAPPED (child) || child->input_only || child->composited) continue; /* Ignore offscreen children, as they don't draw in their parent and @@ -4180,7 +4184,9 @@ gdk_window_process_updates_recurse (GdkWindow *window, r.height = child->height; child_region = gdk_region_rectangle (&r); - + if (child->shape) + gdk_region_intersect (child_region, child->shape); + if (child->impl == private->impl) { /* Client side child, expose */ -- 2.30.2